package schema

import (
	"errors"
	"jgt-oper/src/util"
)

// LoginInfo 登录信息
type LoginInfo struct {
	Username string `json:"username"` // 用户名
	Password string `json:"password"` // 密码
}

func (a *LoginInfo) String() string {
	return util.JSONMarshalToString(a)
}

// Validate 验证参数
func (a *LoginInfo) Validate() error {
	if a.Username == "" || a.Password == "" {
		return errors.New("无效的请求参数")
	}
	return nil
}

// LoginHistory 用户登录历史
type LoginHistory struct {
	ID         int64  `json:"id" bson:"_id"`                  // 自增ID
	UserID     string `json:"user_id" bson:"user_id"`         // 用户ID
	Channel    string `json:"channel" bson:"channel"`         // 渠道(android/ios)
	DeviceID   string `json:"device_id" bson:"device_id"`     // 设备ID
	DeviceType string `json:"device_type" bson:"device_type"` // 设备类型(iPhone/Android/iPad/Pad)
	NetType    string `json:"net_type" bson:"net_type"`       // 网络类型
	OS         string `json:"os" bson:"os"`                   // 操作系统
	OSVersion  string `json:"os_version" bson:"os_version"`   // 操作系统版本
	PhoneBrand string `json:"phone_brand" bson:"phone_brand"` // 手机厂商
	PhoneModel string `json:"phone_model" bson:"phone_model"` // 手机型号
	Created    int64  `json:"created" bson:"created"`         // 创建时间戳
}

// Validate 验证参数
func (a *LoginHistory) Validate() error {
	if a.UserID == "" || a.DeviceID == "" || a.Channel == "" {
		return errors.New("无效的请求参数")
	}
	return nil
}

// ModifyPassword 修改密码
type ModifyPassword struct {
	OldPassword string `json:"old_password"` // 原始密码(MD5 加密后转大写的值)
	Password    string `json:"password"`     // 新的登录密码(MD5 加密后转大写的值)
}

// Validate 验证参数
func (a *ModifyPassword) Validate() error {
	if a.OldPassword == "" || a.Password == "" {
		return errors.New("无效的请求参数")
	}
	return nil
}
